// #include <bits/stdc++.h>
// #define x first
// #define y second
// using namespace std;
// int n, m;
// const int N = 410;
// int dist[N][N];
// typedef pair<int, int> PII;
// PII q[N * N];
// int dx[] = {2, 2, 1, 1, -1, -1, -2, -2};
// int dy[] = {1, -1, 2, -2, 2, -2, 1, -1};

// void bfs(int x1, int y1)
// {
//     q[0] = {x1, y1};
//     int hh, tt = 0;
//     memset(dist, -1, sizeof(dist));
//     dist[x1][y1] = 0;
//     while (hh <= tt)
//     {
//         auto t = q[hh++];
//         // 遍历八个方向
//         for (int i = 0; i < 8; i++)
//         {
//             int a = t.x + dx[i];
//             int b = t.y + dy[i];

//             if (a < 1 || a > n || b < 1 || b > m)
//                 continue;
//             if (dist[a][b] >= 0)
//                 continue;
//             dist[a][b] = dist[t.x][t.y] + 1;
//             q[++tt] = {a, b};
//         }
//     }
// }
// int main()
// {
//     ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//     int x1, y1;
//     cin >> n >> m >> x1 >> y1;
//     bfs(x1, y1);
//     for (int i = 1; i <= n; i++)
//     {
//         for (int j = 1; j <= m; j++)
//         {
//             cout << left << setw (5) <<dist[i][j] ;
//         }
//         cout << endl;
//     }
//     return 0;
// }

#include <bits/stdc++.h>
using namespace std;
const int N = 410;
typedef pair<int, int> PII;
#define x first
#define y second
int dist[N][N];
int n, m;
PII q[N * N];
int dx[] = {2, 2, 1, 1, -1, -1, -2, -2};
int dy[] = {1, -1, 2, -2, 2, -2, 1, -1};

void bfs(int x1, int y1)
{
    q[0] = {x1, y1};
    int tt, hh = 0;
    memset(dist, -1, sizeof (dist));
    dist[x1][y1] = 0;
    while (tt >= hh)//当队列不为空
    {
        // t = q[hh];
        // hh++;
        auto t = q[hh++];
        for (int i = 0; i < 8; i++)
        {
            int a = t.x + dx[i];
            int b = t.y + dy[i];

            if (a < 1 || a > n || b < 1 || b > m)
                continue;
            if (dist[a][b] >= 0)
                continue;

            dist[a][b] = dist[t.x][t.y] + 1;
            q[++tt] = {a, b};
            // tt++;
            // q[tt] = {a, b};
        }
    }
}
int main()
{
    int x1, y1;
    cin >> n >> m >> x1 >> y1;
    bfs(x1, y1);
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            cout << left << setw(5) << dist[i][j];
        }
        cout << endl;
    }
    return 0;
}
